#include<bits/stdc++.h>
using namespace std;

int n,m,s,t;
vector<int> edges[100005];
bool visit[100005];
bool exist[100005];
int ans[100005];
int main(){
	cin>>n>>m;
	for(int i=0;i<m;i++){
		cin>>s>>t;
		edges[t].push_back(s);
	}
	queue<int> que;
	memset(exist,true,sizeof(exist));
	for(int i=n;i>0;i--){
		if(exist[i]){
			memset(visit,false,sizeof(visit));
			que.push(i);
			while(!que.empty()){
				int x=que.front();
				que.pop();
				ans[x]=i;
				exist[x]=false;
				for(auto& j:edges[x]){
					if(exist[j]&&!visit[j]){
						que.push(j);
						visit[j]=true;
					}
				}
			};
		}
	}
	for(int i=1;i<=n;i++){
		cout<<ans[i]<<' ';
	}
	return 0;
}
